#ifndef __PC_VECTOR_OPERATION_H
#define __PC_VECTOR_OPERATION_H
#include "wtype.h"
#include <cstdint>

typedef int32_t (*callback)(VectorParam &);

typedef void (*u31_code_callback)(const U31CodeFile &u31_code_file, const char *instruction, int32_t case_num, const VectorParam &vp);

bool v_instruction_process(callback cb, VectorParam &vp, u31_code_callback u31_cb = nullptr,
                           const U31CodeFile &u31_code_file = U31CodeFile{nullptr, nullptr, nullptr},
                           const char *instruction = nullptr, int32_t case_num = 0);

void init_vector_result(VectorResult &result);

int32_t get_vector_result(int8_t cmd_mode, const VectorResult &result, void **out_ptr);

int32_t v_copy(VectorParam &vp);
int32_t v_abs(VectorParam &vp);
int32_t v_add(VectorParam &vp);

#endif // ! __PC_VECTOR_OPERATION_H
